
*******The Impact of Local Government Information Disclosure on County-Seat Development in an Authoritarian Context: Evidence from a Pilot Policy in China
*******Yan Yingchao,Lyu Shoujun


**# Table1 Descriptive statistics of variables

logout, save(Table1) word: tabstat ecor lnecor publicr lnpublicr lysp fusp18 lnurbarea lncoupop lngdp lnind1 lnind2 lnretail lnwspro lngq lnpwpro lngrainout lnl4 lnhosbed lnwelbed lnwelcen lngy2, stats(count mean sd min max) c(s) f(%6.2f)



**# 4.1 Time trend******

******Figure 2 Trends in land use proportions (2015–2022
******(1) Average share of economic-use land	

preserve
collapse (mean) mean_y = ecor, by(year treat)

graph set window fontface "Sabon" 

twoway line mean_y year if treat==1, sort lcolor(black) lpattern(solid) || ///
       line mean_y year if treat==0, sort lcolor(black) lpattern(dash)  ///
       legend(order(1 "Treat group" 2 "Control group") pos(6) rows(1)) ///
       xlabel(, labsize(medium)) ylabel(, labsize(medium)) ///
	   ylabel(, labsize(medium) grid glcolor(gs14) glwidth(vthin)) ///
       xtitle("Year", size(medium)) ytitle("Average Share of Economic-Use Land", size(medium)) ///
       title("") graphregion(color(white)) plotregion(color(white)) 

graph export "Figure 2(1).tif", replace width(6000) height(4500) 

  
preserve
collapse (mean) mean_y = publicr, by(year treat)

graph set window fontface "Sabon"  

twoway line mean_y year if treat==1, sort lcolor(black) lpattern(solid) || ///
       line mean_y year if treat==0, sort lcolor(black) lpattern(dash)  ///
       legend(order(1 "Treat group" 2 "Control group") pos(6) rows(1)) ///
       xlabel(, labsize(medium)) ylabel(, labsize(medium)) ///
	   ylabel(, labsize(medium) grid glcolor(gs14) glwidth(vthin)) ///
       xtitle("Year", size(medium)) ytitle("Average Share of Public Service Land", size(medium)) ///
       title("") graphregion(color(white)) plotregion(color(white)) 

graph export "Figure 2(2).tif", replace width(6000) height(4500) 


**# 4.2 Regression model estimates **************

*****Table 2 Regression results**********
	   
xtreg ecor treattime i.year,fe vce(cluster countyid)
outreg2 using "Table 2.doc",drop(i.year) addtext(Time FE,Yes,County FE,Yes,Control,No,Cluster,Yes) ctitle(ecor) dec(3)

xtreg ecor treattime lnurbarea lncoupop lngdp lnind1 lnind2 i.year,fe vce(cluster countyid)
outreg2 using "Table 2.doc",drop(i.year) addtext(Time FE,Yes,County FE,Yes,Control,Yes,Cluster,Yes) ctitle(ecor) dec(3)

xtreg lnecor treattime lnurbarea lncoupop lngdp lnind1 lnind2 i.year,fe vce(cluster countyid)
outreg2 using "Table 2.doc",drop(i.year) addtext(Time FE,Yes,County FE,Yes,Control,Yes,Cluster,Yes) ctitle(lnecor) dec(3)

******************			   
xtreg publicr treattime i.year,fe vce(cluster countyid)
outreg2 using "Table 2.doc",drop(i.year) addtext(Time FE,Yes,County FE,Yes,Control,No,Cluster,Yes) ctitle(publicr) dec(3)

xtreg publicr treattime lnurbarea lncoupop lngdp lnind1 lnind2 i.year,fe vce(cluster countyid)
outreg2 using "Table 2.doc",drop(i.year) addtext(Time FE,Yes,County FE,Yes,Control,Yes,Cluster,Yes) ctitle(publicr) dec(3)

xtreg lnpublicr treattime lnurbarea lncoupop lngdp lnind1 lnind2 i.year,fe vce(cluster countyid)
outreg2 using "Table 2.doc",drop(i.year) addtext(Time FE,Yes,County FE,Yes,Control,Yes,Cluster,Yes) ctitle(lnpublicr) dec(3)


**# 4.3 Parallel trends assumption**************

set scheme s2mono  
graph set window fontface "Sabon"  

xtreg lnecor before3 before2 current after1 after2 after3 lnurbarea lncoupop lngdp lnind1 lnind2 i.year, fe vce(cluster countyid)
est store D
coefplot D, keep(before3 before2 current after1 after2 after3) vertical recast(connect) yline(0) graphregion(color(white)) ///
xtitle("Time", size(medium)) ytitle("Coefficients (Economic-use Land Ratio)", size(medium)) ylabel(, labsize(medium) grid glcolor(gs14) glwidth(vthin)) 

graph export "Figure 3(1).tif", replace width(6000) height(4500) 

xtreg lnpublicr before3 before2 current after1 after2 after3 lnurbarea lncoupop lngdp lnind1 lnind2 i.year, fe vce(cluster countyid)
est store D
coefplot D, keep(before3 before2 current after1 after2 after3) vertical recast(connect) yline(0) graphregion(color(white)) ///
xtitle("Time", size(medium)) ytitle("Coefficients (Public Service Land Ratio)", size(medium)) ylabel(, labsize(medium) grid glcolor(gs14) glwidth(vthin)) 

graph export "Figure 3(2).tif", replace width(6000) height(4500) 

**# 4.4 Robustness checks********

**# *******4.4.1 Alternative dependent variables******

********Figure 4(1)****************

eststo clear
eststo: quietly xtreg lnretail treattime lnurbarea lncoupop lngdp lnind1 lnind2 i.year,fe vce(cluster countyid)
est store w1

eststo: quietly xtreg lnwspro treattime lnurbarea lncoupop lngdp lnind1 lnind2 i.year,fe vce(cluster countyid)
est store w2

eststo: quietly xtreg lngq treattime lnurbarea lncoupop lngdp lnind1 lnind2 i.year,fe vce(cluster countyid)
est store w3

eststo: quietly xtreg lnpwpro treattime lnurbarea lncoupop lngdp lnind1 lnind2 i.year,fe vce(cluster countyid)
est store w4

eststo: quietly xtreg lngrainout treattime lnurbarea lncoupop lngdp lnind1 lnind2 i.year,fe vce(cluster countyid)
est store w5

set scheme s2mono
graph set window fontface "Sabon"  

coefplot w1 w2 w3 w4 w5, drop(_cons lnurbarea lncoupop lngdp lnind1 lnind2 i.year) ///
keep(treattime) aseq swapnames legend(off) xline(0) xlabel(-0.2(0.05)0.2) msymbol(circle diamond)  xtitle("Coefficient") ///
coeflabels(w1 = "Total Retail Sales" ///   
               w2 = "Production Water (Self)" ///
               w3 = "Production LPG Sales" ///
               w4 = "Production Water (Public)" ///
               w5 = "Grain Output") ///
			   graphregion(color(white)) xsize(8) ysize(5)  

graph export "Figure 4(1).tif", as(tif) width(6400) height(4000) replace

*******Figure 4(2)***************

eststo clear

eststo: quietly xtreg lnl4 treattime lnurbarea lncoupop lngdp lnind1 lnind2 i.year,fe vce(cluster countyid)
est store w1

eststo: quietly xtreg lnhosbed treattime lnurbarea lncoupop lngdp lnind1 lnind2 i.year,fe vce(cluster countyid)
est store w2

eststo: quietly xtreg lnwelbed treattime lnurbarea lncoupop lngdp lnind1 lnind2 i.year,fe vce(cluster countyid)
est store w3

eststo: quietly xtreg lnwelcen treattime lnurbarea lncoupop lngdp lnind1 lnind2 i.year,fe vce(cluster countyid)
est store w4

eststo: quietly xtreg lngy2 treattime lnurbarea lncoupop lngdp lnind1 lnind2 i.year,fe vce(cluster countyid)
est store w5

set scheme s2mono
graph set window fontface "Sabon"  

coefplot w1 w2 w3 w4 w5, drop(_cons lnurbarea lncoupop lngdp lnind1 lnind2 i.year) ///
keep(treattime) aseq swapnames legend(off) xline(0) xlabel(-0.1(0.05)0.2) msymbol(circle diamond)  xtitle("Coefficient") ///
coeflabels(w1 = "Garbage Treatment Capacity" ///   
               w2 = "Hospital Beds" ///
               w3 = "Welfare Center Beds" ///
               w4 = "Welfare Centers" ///
               w5 = "Parks") ///
			   graphregion(color(white)) xsize(8) ysize(5)  

graph export "Figure 4(2).tif", as(tif) width(6400) height(4000) replace


**# ********4.4.2 Placebo test********

********Figure 5(1)**************

xtreg lnecor treattime lnurbarea lncoupop lngdp lnind1 lnind2 i.year, fe vce(cluster countyid)
scalar b_true = _b[treattime]
scalar p_true = (2 * ttail(e(df_r), abs(_b[treattime]/_se[treattime])))


set seed 1234
local reps 500
tempname memhold
postfile `memhold' b p using placebo_results, replace

preserve
    keep countyid treat
    duplicates drop
    count if treat == 1
    local num_treated = r(N)  
restore

quietly {
    forvalues i = 1/`reps' {
        preserve            
            keep countyid
            duplicates drop
            gen random = runiform()
            sort random
            gen fake_treated = (_n <= `num_treated') 
            tempfile temp_fake
            save `temp_fake'
        restore
        
        merge m:1 countyid using `temp_fake', nogenerate
        gen fake_did = fake_treated * time
        
        xtreg lnecor fake_did lnurbarea lncoupop lngdp lnind1 lnind2 i.year, fe vce(cluster countyid)
        
        post `memhold' (_b[fake_did]) (2 * ttail(e(df_r), abs(_b[fake_did]/_se[fake_did])))
        drop fake_treated fake_did
    }
}
postclose `memhold'

use placebo_results, clear

set scheme s2mono
graph set window fontface "Sabon"  

kdensity b, ///
    xtitle("Simulated Coefficients") ///
    ytitle("Density (Economic-use land ratio)") ///
    xline(`=b_true', lcolor(black) lpattern(dash)) /// 
	ylabel(, labsize(medium) grid glcolor(gs14) glwidth(vthin)) ///
    subtitle("") ///
	note("") ///
	title("") ///
	graphregion(color(white))

graph export "Figure 5(1).tif", as(tif) width(4000) replace


********Figure 5(2)**************


xtreg lnpublicr treattime lnurbarea lncoupop lngdp lnind1 lnind2 i.year, fe vce(cluster countyid)
scalar b_true = _b[treattime]
scalar p_true = (2 * ttail(e(df_r), abs(_b[treattime]/_se[treattime])))


set seed 1234
local reps 500
tempname memhold
postfile `memhold' b p using placebo_results, replace


preserve
    keep countyid treat
    duplicates drop
    count if treat == 1
    local num_treated = r(N)  
restore


quietly {
    forvalues i = 1/`reps' {
        preserve
            
            keep countyid
            duplicates drop
            gen random = runiform()
            sort random
            gen fake_treated = (_n <= `num_treated') 
            tempfile temp_fake
            save `temp_fake'
        restore
        
        merge m:1 countyid using `temp_fake', nogenerate
        gen fake_did = fake_treated * time
        
        xtreg lnpublicr fake_did lnurbarea lncoupop lngdp lnind1 lnind2 i.year, fe vce(cluster countyid)
        
        post `memhold' (_b[fake_did]) (2 * ttail(e(df_r), abs(_b[fake_did]/_se[fake_did])))
        drop fake_treated fake_did
    }
}
postclose `memhold'

use placebo_results, clear

set scheme s2mono
graph set window fontface "Sabon"  

kdensity b, ///
    xtitle("Simulated Coefficients") ///
    ytitle("Density (Public service land ratio)") ///
    xline(`=b_true', lcolor(black) lpattern(dash)) /// 
	ylabel(, labsize(medium) grid glcolor(gs14) glwidth(vthin)) ///
    subtitle("") ///
	note("") ///
	title("") ///
	graphregion(color(white))

graph export "Figure 5(2).tif", as(tif) width(4000) replace

**# ********4.4.3 Propensity score matching (PSM)**************

*************Table 3(1)(2)*************

set seed 10101
gen ranorder = runiform()
sort ranorder
psmatch2 treat lnurbarea lncoupop lngdp lnind1 lnind2, outcome(lnecor) radius cal(0.0001) logit
pstest lnurbarea lncoupop lngdp lnind1 lnind2,both graph
xtreg lnecor treattime lnurbarea lncoupop lngdp lnind1 lnind2 i.year if _support==1,re cluster(countyid)
outreg2 using "Table 3.doc",drop(i.year) addtext(Year FE,Yes,County FE,Yes,Control,Yes,Cluster,Yes) ctitle(lnecor) dec(3)


set seed 10101
replace ranorder = runiform()
sort ranorder
psmatch2 treat lnurbarea lncoupop lngdp lnind1 lnind2, outcome(lnpublicr) radius cal(0.0001) logit
pstest lnurbarea lncoupop lngdp lnind1 lnind2,both graph
xtreg lnpublicr treattime lnurbarea lncoupop lngdp lnind1 lnind2 i.year if _support==1,re cluster(countyid)
outreg2 using "Table 3.doc",drop(i.year) addtext(Year FE,Yes,County FE,Yes,Control,Yes,Cluster,Yes) ctitle(lnpublicr) dec(3)

**# ********4.4.4 Mitigating confounding policy effects*************

*************Table 3(3)(4)*************

xtreg lnecor treattime lnurbarea lncoupop lngdp lnind1 lnind2 i.year if treat1 == 0,fe vce(cluster countyid)

outreg2 using "Table 3.doc",drop(i.year lnurbarea lncoupop lngdp lnind1 lnind2) addtext(Time FE,Yes,County FE,Yes,Control,Yes,Cluster,Yes) ctitle(droplnecor) dec(3)

xtreg lnpublicr treattime lnurbarea lncoupop lngdp lnind1 lnind2 i.year if treat1 == 0,fe vce(cluster countyid)

outreg2 using "Table 3.doc",drop(i.year lnurbarea lncoupop lngdp lnind1 lnind2) addtext(Time FE,Yes,County FE,Yes,Control,Yes,Cluster,Yes) ctitle(droplnpublicr) dec(3)



*************Table 3(5)(6)*************
xtreg lnecor treattime1 lnurbarea lncoupop lngdp lnind1 lnind2 i.year,fe vce(cluster countyid)
outreg2 using "Table 3.doc",drop(i.year lnurbarea lncoupop lngdp lnind1 lnind2 Constant) addtext(Time FE,Yes,County FE,Yes,Control,Yes,Cluster,Yes) ctitle(lnecor) dec(3)


xtreg lnpublicr treattime1 lnurbarea lncoupop lngdp lnind1 lnind2 i.year,fe vce(cluster countyid)
outreg2 using "Table 3.doc",drop(i.year lnurbarea lncoupop lngdp lnind1 lnind2 Constant) addtext(Time FE,Yes,County FE,Yes,Control,Yes,Cluster,Yes) ctitle(lnpublicr) dec(3)


**# 5.1 Heterogeneous effects of information disclosure policy by citizen response

*******Table 4****************
drop grp2
egen grp2 = cut(lysp), at(0,7,1400) label
tab grp2	

xtreg lnecor treattime lnurbarea lncoupop lngdp lnind1 lnind2 i.year if grp2==0,fe vce(cluster countyid)
outreg2 using "Table 4.doc",drop(i.year lnurbarea lncoupop lngdp lnind1 lnind2) addtext(Time FE,Yes,County FE,Yes,Control,Yes,Cluster,Yes) ctitle(ecolygrp1) dec(3)

xtreg lnpublicr treattime lnurbarea lncoupop lngdp lnind1 lnind2 i.year if grp2==0,fe vce(cluster countyid)
outreg2 using "Table 4.doc",drop(i.year lnurbarea lncoupop lngdp lnind1 lnind2) addtext(Time FE,Yes,County FE,Yes,Control,Yes,Cluster,Yes) ctitle(publiclygrp1) dec(3)


xtreg lnecor treattime lnurbarea lncoupop lngdp lnind1 lnind2 i.year if grp2==1,fe vce(cluster countyid)
outreg2 using "Table 4.doc",drop(i.year lnurbarea lncoupop lngdp lnind1 lnind2) addtext(Time FE,Yes,County FE,Yes,Control,Yes,Cluster,Yes) ctitle(ecolygrp2) dec(3)

xtreg lnpublicr treattime lnurbarea lncoupop lngdp lnind1 lnind2 i.year if grp2==1,fe vce(cluster countyid)
outreg2 using "Table 4.doc",drop(i.year lnurbarea lncoupop lngdp lnind1 lnind2) addtext(Time FE,Yes,County FE,Yes,Control,Yes,Cluster,Yes) ctitle(publiclygrp2) dec(3)



**# 5.2 Heterogeneous effects of information disclosure policy by fiscal capacity

*****Table 5****************


egen fundgrp = cut(fusp18), at(0,10405.5,3000000) label
tab fundgrp

xtreg lnecor treattime lnurbarea lncoupop lngdp lnind1 lnind2 i.year if fundgrp==0,fe vce(cluster countyid)
outreg2 using "Table 5.doc",drop(i.year lnurbarea lncoupop lngdp lnind1 lnind2) addtext(Time FE,Yes,County FE,Yes,Control,Yes,Cluster,Yes) ctitle(ecofundgrp1) dec(3)

xtreg lnpublicr treattime lnurbarea lncoupop i.year if fundgrp==0,fe vce(cluster countyid)
outreg2 using "Table 5.doc",drop(i.year lnurbarea lncoupop lngdp lnind1 lnind2) addtext(Time FE,Yes,County FE,Yes,Control,Yes,Cluster,Yes) ctitle(publicfundgrp1) dec(3)


xtreg lnecor treattime lnurbarea lncoupop lngdp lnind1 lnind2 i.year if fundgrp==1,fe vce(cluster countyid)
outreg2 using "Table 5.doc",drop(i.year lnurbarea lncoupop lngdp lnind1 lnind2) addtext(Time FE,Yes,County FE,Yes,Control,Yes,Cluster,Yes) ctitle(ecofundgrp2) dec(3)

xtreg lnpublicr treattime lnurbarea lncoupop i.year if fundgrp==1,fe vce(cluster countyid)
outreg2 using "Table 5.doc",drop(i.year lnurbarea lncoupop lngdp lnind1 lnind2) addtext(Time FE,Yes,County FE,Yes,Control,Yes,Cluster,Yes) ctitle(publicfundgrp2) dec(3)
			   















































